Introducción
El presente documento tiene como propósito proveer ejemplos de aplicación del Generador Estocástico de datos climáticos desarrollado por el SISSA. Este software nació como una herramienta clave para el análisis probabilista del riesgo de sequías pero por su flexibilidad puede ser aplicado a una multitud de aplicaciones.
Esta guía contiene solamente ejemplos de algunas de las posibilidades y productos derivados del generador. Es un complemento de la presentación en donde se desarrollarán y replicarán algunos de los productos mostrados durante la misma.
Instalación de paquetes necesarios
Se comprueba que estén instalados los paquetes necesarios. De no ser así, se instalarán automáticamente.
Creación de directorios
En este paso nos aseguramos de crear los directorios que contendrán los datos de entrara para el ajuste del modelo y los resultados.
- /input_data: aquí se guardarán los datos meteorológicos y los metadatos de las estaciones
- /output_data: aquí se guardarán los resultados de la simulación
Si estos directorios no existen, se crearán.
Generación de series sintéticas para una sola estación meteorológica
En este ejemplo veremos como se generan series sintéticas para una sola estación meteorológica condicionada por variables trimestrales. Esta configuración permite que las series generadas copien las variaciones observadas en el registro histórico.
Crear archivos de entrada
El primer paso consiste en generar los dataset de entrada que se instalaron junto al paquete del generador estocástico. Este set de datos es sólo a título demostrativo, si el usuario desea correr el modelo con sus propios datos deberá cambiar los objetos que se generarán en esta sección por los suyos y colocarlos en la carpeta input_data.
Los archivos necesarios son:
- stations.csv
- climate.csv
El primer paso para la generación de las series sintéticas es el ajuste de los modelos estadísticos: dos para temperaturas máxima y mínima y dos para precipitación. Estos modelos necesitan de datos observados diarios de variables meteorológicas. Si bien se toleran una cierta cantidad de faltantes es conveniente que las series tengan una longitud no menor a 30 años para así capturar la variabilidad climática observada.
Los datos meteorológicos se dividen en dos archivos separados: stations.csv y climate.csv. Los nombres de los mismos no deben ser iguales a los usados aquí.
Los metadatos de las estaciones se alojan en el archivo stations.csv. Este archivo contiene la información indispensable de las estaciones meteorológicas que serán usadas en el ajuste del modelo. Las variables que deben ser incluidas en la tabla son:
- station_id: número unívoco para cada estación meteorológica. La variable debe ser de tipo integer
- latitude: latitud en grados decimales. La variable debe ser de tipo double
- longitude: longitud en grados decimales. La variable debe ser de tipo double
La tabla puede tener más variables pero sólo se necesitan las anteriores.
A continuación se muestran las primeras cinco filas del dataset y los tipo de dato de cada una de las variables.
## # A tibble: 1 x 8
## x y station_id nombre lat_dec lon_dec elev pais_id
## <dbl> <dbl> <int> <chr> <dbl> <dbl> <dbl> <chr>
## 1 5001614. 6256841. 87448 Villa Reynolds Aero -33.7 -65.4 486 AR
| x | y | station_id | nombre | lat_dec | lon_dec | elev | pais_id |
|---|---|---|---|---|---|---|---|
| 5001614 | 6256841 | 87448 | Villa Reynolds Aero | -33.7181 | -65.3737 | 486 | AR |
El objeto stations debe ser convertido de tibble a sf. El sistema de referencia espacial debe ser planar. No es necesario un sistema de referencia espacial en particular, solamente las coordenadas deben estar expresadas en metros.
# Convertimos el objeto stations a sf y se convierte su proyección de WGS 1984 a
# POSGAR Argentina Faja 5.
stations %<>%
sf::st_as_sf(coords = c("lon_dec", "lat_dec"), crs = 4326) %>%
sf::st_transform(crs = 22185)La información climática se aloja en el archivo climate.csv. Este archivo contiene los datos de las estaciones meteorológicas que serán usadas en el ajuste del modelo. Las variables que deben ser incluidas en la tabla son:
- date: fecha del dato. La variable debe ser de tipo date
- station_id: número unívoco para cada estación meteorológica. La variable debe ser de tipo integer
- prcp: datos diarios de precipitación La variable debe ser de tipo double
- tmax: datos diarios de temperatura máxima. La variable debe ser de tipo double
- tmin: datos diarios de temperatura mínima. La variable debe ser de tipo double
A continuación se muestran las primeras cinco filas del dataset y los tipo de dato de cada una de las variables.
## # A tibble: 6 x 5
## date station_id tmax tmin prcp
## <date> <int> <dbl> <dbl> <dbl>
## 1 1961-01-01 87448 37.4 13.5 0.6
## 2 1961-01-02 87448 27.4 14.3 23.9
## 3 1961-01-03 87448 26.6 13.5 0
## 4 1961-01-04 87448 31 11.7 6
## 5 1961-01-05 87448 27 14.1 0
## 6 1961-01-06 87448 26.3 11.3 0
Los nombres de las variables son importantes y deben ser siempre los mismos ya que se seleccionarán las variables en función de los mismos. Los nombres deben ser los siguientes:
date: corresponde a la fecha del día en formatoDate. El formato de la fecha para facilitar el reconocimiento por parte de R es “YYYY-MM-DD”, es decir, el año expresado con cuatro dígitos y luego dos dígitos para el mes y día.station_id: Identificador unívoco de cada una de las estaciones. Debe ser un número entero.tmax: Temperatura máxima diaria expresada en °C.tmin: Temperatura mínima diaria expresada en °C.prcp: Precipitación diaria expresada en mm.
El orden de las variables no es importante pero, como se mencionó, si se deben respetar los nombres de cada una. En el caso de faltantes, no se utiliza ningún valor específico para los NAs, sólo se debe dejar ese valor vacío. Este archivo tiene un formato largo, es decir, las estaciones se deben colocar una debajo de la otra.
A continuación veremos una visualización de las temperaturas máxima y mínima de la estación elegida para el ajuste.
Al tratarse de un modelo que ajusta condicionado por la variabilidad de baja frecuencia preexistente en los datos observados es necesario la agregación de las variables diarias en totales trimestrales de precipitación y medias trimestrales de temperaturas máxima y mínima. Esta operación puede realizarse con la función summarise_seasonal_climate incluida en el paquete. Esta función, además de agregar los datos, permite la imputación de faltantes. Se toleran una cierta cantidad que puede ser determinada por el usuario. El método de imputación utilizado es el imputePCA() de la librería missMDA .
# Agregación de valores diarios
seasonal_variates <- gamwgen::summarise_seasonal_climate(climate, umbral_faltantes = 0.2)
# Se muestran las primeras cinco filas
head(seasonal_variates)## # A tibble: 6 x 6
## station_id year season seasonal_prcp seasonal_tmax seasonal_tmin
## <int> <int> <int> <dbl> <dbl> <dbl>
## 1 87448 1961 1 274. 31.0 14.5
## 2 87448 1961 2 236 24.5 8.47
## 3 87448 1961 3 11.3 19.0 1.35
## 4 87448 1961 4 234. 24.7 7.76
## 5 87448 1962 1 402. 29.9 14.2
## 6 87448 1962 2 187. 24.3 7.99
Cabe mencionar que con esta función las valores se agregan por trimestre. Los trimestres comprenden a los siguientes meses:
- Verano: Diciembre, Enero y Febrero
- Otoño: Marzo, Abril y Mayo
- Invierno: Junio, Julio y Agosto
- Primavera: Septiembre, Octubre y Noviembre
Los valores también se podrían agregar siguiendo otra definición de estaciones pero en ese caso, el usuario debería hacerlo por su cuenta. Algunas funciones útiles para hacerlo son las disponibles en el paquete lubridate. Para estas variables los nombres también son importantes por lo que deben respetarse los mostrados anteriormente.
Ajuste de los modelos estadísticos
A continuación se mostrará como ajustar los cuatro modelos estadísticos para una sola estación meteorológica condicionados por la variabilidad de baja frecuencia. El anterior es sólo uno de las configuraciones posibles y para ver más detalles se sugiere consultar el manual completo del generador.
El ajuste del modelo local (en un punto) necesita de dos funciones:en una se define la configuración general del modelo y con la segunda se corre el modelo propiamente dicho.
Primero se crea un objeto con el control para el ajuste del simulador. Los argumentos son:
prcp_occurrence_threshold: el umbral de precipitación para un día lluvioso. La OMM recomienda un umbral de 0.1 mm para considerar un día como lluvioso.avbl_cores: Cantidad de núcleos disponibles para la paralelización.planar_crs_in_metric_coords: sistema de coordenadas planar
control_fit <-gamwgen::local_fit_control(
prcp_occurrence_threshold = 0.1, # Umbral para la definición de días húmedos
avbl_cores = 1, # Cantidad de núcleos disponibles
planar_crs_in_metric_coords = 22185) # Sistema de referencia espacial (en metros)Se corre el ajuste para la estación meteorológica. Los argumentos de la función son:
climate: datos meteorológicos observados para la estaciónstations: metadatos de las estaciones meteorológicasseasonal_covariates: datos agregados trimestrales. Si es NULL el ajuste será sin covariables y las series generadas serán estacionarias.control: objeto de controlverbose: controla la impresión de mensajes en la consola. FALSE por defecto.
# Al correr la función se realizar el ajuste de los cuatro modelos para cada una de las estaciones. En este caso, por cuestiones de tiempo a cargar un objeto ya precalculado. SI el usuario desea correrlo deberá correr este paso.
gamgen_fit <- gamwgen::local_calibrate(climate = climate,
stations = stations,
seasonal_covariates = NULL,
control = control_fit,
verbose = FALSE)Para esta demostración, cargamos el objeto con el ajuste del modelo ya realizado.
# Copiamos el archivo preajustado a nuestro directorio de trabajo
if (!fs::file_exists('input_data/fit_local.RData')) {
fs::file_copy(system.file('/autorun/local', "fit_local.RData", package = "gamwgen"),
new_path = 'input_data/fit_local.RData')
}
# Cargamos el archivo recientemente creado
load('input_data/fit_local.RData')
# Clase del objeto con el ajuste del generador
class(gamgen_fit)## [1] "gamwgen"
## [1] "control" "stations" "climate"
## [4] "seasonal_covariates" "crs_used_to_fit" "start_climatology"
## [7] "fitted_models" "models_data" "models_residuals"
## [10] "statistics_threshold" "exec_times"
Dentro del objeto se guardan todo lo necesario para la simulación así como información accesoria.
control: Copia de la configuración usada para calibrar el generadorstations: Estaciones meteorológicas utilizadas para la calibraciónclimate: Datos climáticos de cada uno de las estacionesseasonal_covariates: Series temporales de totales trimestrales de precipitación y medias trimestrales de temperaturas máxima y mínima.crs_used_to_fit: Sistema de referencia espacial usado para proyectarstart_climatology: Climatología diaria de cada una de ;as variables de entrada.fitted_models: Modelos ajustados, uno para cada variable: temperaturas máxima y mínima y ocurrencia y montos de precipitación.models_data: Datos usados efectivamente usados para ajustar los modelos (sin NAs)models_residuals: Residuos de cada uno de los modelos. Es decir, la diferencia entre el valor ajustado por el modelo (clima local) y el valor observado en el día istatistics_threshold: Umbrales de amplitud térmica diaria por mes. Si la amplitud simulada está fuera de este rango, se repetirá la simulación para ese día a los fines de mantener la consistencia entre variablesexec_times: Tiempo de ejecución de cada una de las etapas del ajuste
Los umbrales de amplitudes máxima y mínima permitidas son muy importantes para evitar que se produzcan temperaturas máximas inferiores a las mínimas. En la siguiente Figura se puede ver la variabilidad mensual de cada uno de estos umbrales y el efecto del tipo de día (seco o lluvioso) sobre ellos.
Cada uno de los GAMs ajustados se almacenan en el objeto gamgen_fit y pueden ser evaluados con la función summary().
##
## Family: gaussian
## Link function: identity
##
## Formula:
## tmax ~ s(tmax_prev, tmin_prev, k = 50) + s(prcp_occ, bs = "re") +
## s(prcp_occ_prev, bs = "re") + s(doy, bs = "cc", k = 30) +
## s(SX1, SN1, k = 20) + s(SX2, SN2, k = 20) + s(SX3, SN3, k = 20) +
## s(SX4, SN4, k = 20)
##
## Parametric coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 25.62116 0.03189 803.4 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df F p-value
## s(tmax_prev,tmin_prev) 29.9069 38.405 225.74 <2e-16 ***
## s(prcp_occ) 0.9989 1.000 930.30 <2e-16 ***
## s(prcp_occ_prev) 0.9995 1.000 2248.11 <2e-16 ***
## s(doy) 12.6336 28.000 73.12 <2e-16 ***
## s(SX1,SN1) 3.0997 3.689 55.32 <2e-16 ***
## s(SX2,SN2) 2.0001 2.000 89.25 <2e-16 ***
## s(SX3,SN3) 4.4053 5.853 35.79 <2e-16 ***
## s(SX4,SN4) 2.0001 2.000 86.85 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.713 Deviance explained = 71.4%
## fREML = 58829 Scale est. = 13.964 n = 21466
La función summary permite analizar los resultados del ajuste de cada uno de los modelos.
Ahora vamos a visualizar los resultados del modelo ajustado de temperatura máxima (clima local) y la temperatura observada de la estación.
Generación de series sintéticas
La simulación de datos también está compuesta por dos funciones. En una se especifica gran parte de la configuración de la simulación mientras que la otra realiza la simulación propiamente dicha.
Los argumentos de la función de control son:
nsim: Cantidad de simulaciones a realizar. Se debe ingresar un valor entero mayor o igual a 1.seed: Semilla. Se debe ingresar cualquier numero entero. No es necesario recordarlo porque se guarda junto a los resultados.avbl_cores: Cantidad de núcleos disponibles para la paralelización.use_spatially_correlated_noise: Utilizar la generación estocástica espacialmente correlacionada. Esta opción es sólo válida si en el ajusta y en la simulación se usaron más de cinco estaciones meteorológicas diferentes. Con un menor número no es posible calcular los variogramas necesario. Se debe introducir un boolean (TRUE or FALSE).use_temporary_files_to_save_ram: Si se simulan muchas realizaciones o los recursos informáticos son escasos, esta opción permite guardar los resultados de cada una de las simulaciones en el disco liberando memoria RAM que quedará disponible para generar nuevas simulaciones. Al finalizar la generación todos los archivos se combinan en uno único. Se debe introducir un boolean (TRUE or FALSE).use_temporary_files_to_save_ram: Esta opción permite eliminar los archivos temporales creados para ahorrar RAM luego de terminar la generación de todas las simulaciones. Se debe introducir un boolean (TRUE or FALSE).
control_sim <- gamwgen::local_simulation_control(
nsim = 100, # Cantidad de simulaciones a realizar
seed = 1234, # Semilla para que los resultados sean reproducirles
avbl_cores = 1, # Cantidad de núcleos disponibles a utilizar
use_spatially_correlated_noise = FALSE, # Usar modelo de ruido espacialmente correlacionado
use_temporary_files_to_save_ram = FALSE, # Guardar resultados intermedios para ahorrar RAM
remove_temp_files_used_to_save_ram = TRUE) # Borrar los resultados intermedios creados anteriormenteLuego se procede a la simulación de datos meteorológicos. Los argumentos de la función de simulación son:
model: objeto con el resultado de la funciónlocal_calibrate()simulation_locations: objeto tiposfcon la ubicación de las estaciones a simular. Las estaciones usadas deben haber sido incluidas en el proceso de ajuste. No es necesario que todas estén presentes, se pueden generar series solo sobre algunas de ellas.start_date: Fecha de comienzo de la generación de series sintéticas. Si no se incluyeron covariables estacionales en el ajuste, la fecha de comienzo es completamente arbitraria. Caso contrario, la fecha de comienzo no puede ser anterior al comienza de la serie de covariables, ni tampoco puede ser posterior. Se debe introducir una fecha en formato dateend_date: fecha de fin de la generación de series sintéticas. Si no se incluyeron covariables estacionales en el ajuste, la fecha de fin es completamente arbitraria. Caso contrario, la fecha de comienzo no puede ser anterior al comienza de la serie de covariables, ni tampoco puede ser posterior. Se debe introducir una fecha en formato datecontrol: objeto de controloutput_folder: ruta al directorio donde se guardarán los resultados, tanto finales como intermedios.output_filename: nombre del archivo de salida. Para facilitar la interoperabilidad, el archivo generado es un archivo de texto en formato separado por comas (.csv)seasonal_covariates: datos agregados trimestrales. Si el ajuste se realizó sin covariables, la generación también debe realizarse sin ellas. Caso contrario se producirá un error. Se debe introducir un data frame con los valores agregados para las tres variables (precipitación y temperaturas máxima y mínima) pero no necesariamente deben ser los mismos a los utilizados en el ajuste. Si se desean simular tendencias de algún tipo, ya sea de un modelo de cambio climático o arbitrarias, se deben perturbar estas variables trimestrales e introducirlas aquí.verbose: controla la impresión de mensajes en la consola. FALSE por defecto.
# Al correr la función se realiza la generación de series para cada una de las estaciones.
# En este caso, por cuestiones de tiempo, vamos a cargar un objeto con los resultados de la simulación
simulated_climate <- local_simulation(model = gamgen_fit, # Objeto con los resultados del ajuste
simulation_locations = stations, # Estaciones para las cuales simular
start_date = as.Date('1961-01-01'), # Fecha de comienzo de las simulaciones
end_date = as.Date('2019-01-01'), # Fecha de fin de las simulaciones
control = control_sim, # Objeto con la configuración
output_folder = getwd(), # Directorio donde se guardarán los resultados
output_filename = 'simulations.csv', # Nombre del archivo de salida
seasonal_covariates = seasonal_covariates, # Covariables estacionales
verbose = FALSE) # Impresión de mensajes en la consolaEsta función produce dos tipos de resultados: una lista que permanece en el ambiente de R y los datos generados que son guardados como csv en el directorio indicado precedentemente.
if (!fs::file_exists('input_data/simulated_local.csv')) {
write.csv(readr::read_csv(system.file('/autorun/local', "simulated_local.csv", package = "gamwgen")), here::here('output_data/simulated_local.csv'), row.names = FALSE)
}## Warning: Missing column names filled in: 'X1' [1]
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_double(),
## realization = col_double(),
## station_id = col_double(),
## date = col_date(format = ""),
## tmax = col_double(),
## tmin = col_double(),
## prcp = col_double()
## )
Resultados de la generación
# Se carga el set de datos simulados
simulated_climate <- readr::read_csv(here::here('output_data/simulated_local.csv')) ##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_double(),
## realization = col_double(),
## station_id = col_double(),
## date = col_date(format = ""),
## tmax = col_double(),
## tmin = col_double(),
## prcp = col_double()
## )
Diagnósticos
A continuación se mostraran algunos de los diagnósticos
source("./src/funciones_validacion.R", local = knitr::knit_global())
# Se definen las variables a validar
variables <- c('tmax', 'tmin', 'prcp')
# Se agrega la latitud como una variable más en el data frame con los metadatos de las estaciones
stations <- stations %>%
dplyr::mutate(lat_dec = sf::st_coordinates(geometry)[,'Y'])
# Estaciones usadas en el ajuste. En este ejemplo son las mismas porque solo se ajustó una estación
fit_stations <- stations
# Se debe definir el umbral de lluvia
umbral.precipitacion <- 0.1El objetivo de las distintas pruebas diagnósticas es comprobar si los datos observados pueden ser considerados una realización más del generador. En otras palabras, que las series observadas no pueden distinguirse de las sintéticas. Esto no implica que tengan exactamente la misma media o desvío estándar, etc.
## Estacion 87448
## Procesando estacion 87448
## ... variable tmax
## ... variable tmin
## ... variable prcp
## ... other plots
Diagnósticos de precipitación
A continuación se mostrarán los distintos diagnósticos desarrollados para validar las series diarias de precipitación.
Este diagrama de cajas muestra la probabilidad de ocurrencia de un día húmedo o lluvioso por mes. Las cajas corresponden a las distintas realizaciones y los puntos rojos corresponden al valor observado en la serie histórica. Se observa un claro patrón estacional y como el generador es capaz de capturarlo. En verano, uno de cada tres días es lluvioso mientras que en invierno la probabilidad baja a menos de uno en diez.
Esta Figura muestra la cantidad de días lluviosos por trimestre a lo largo del tiempo. Los puntos rojos corresponden a la cantidad de días lluviosos observados mientras que las cajas corresponden a las distintas realizaciones. Se observa que los puntos se encuentran dentro del rango de las distintas cajas a excepción de un trimestre excepcionalmente húmedo a principios de los 2000.
Esta figura muestra la probabilidad acumulada de ocurrencia de rachas secas por trimestre. La línea roja corresponde a la probabilidad acumulada observada mientras que la envolvente gris corresponde a cada una de las realizaciones.
Esta Figura es muy similar a la anterior con la diferencia que considera las rachas lluviosas en lugar de las secas. La línea roja corresponde a los datos observados y la envolvente gris a las distintas realizaciones. Se observa que para los cuatro trimestres la línea roja se pierde entre las realizaciones.
Esta Figura muestra la probabilidad de ocurrencia de rachas lluviosas de una determinada longitud de días por trimestre. En otras palabras, permite saber cuán frecuente es una racha lluviosa en esta estación meteorológica para cada trimestre. Las líneas rojas corresponden a la serie observada mientras que la envolvente gris a las distintas realizaciones.
Esta Figura es análoga a la anterior solo que considera las rachas secas. Las líneas rojas corresponden a la serie observada y la envolvente gris a las distintas realizaciones. Se observa que las realizaciones tienen el mismo comportamiento que las series observadas y que se captura de manera correcta la variación en las rachas para los distintos trimestres. Para estudios de impacto de sequía este diagnóstico es particularmente importante ya que será uno de los determinantes principales de los déficit acumulados.
Este diagrama de cajas muestra la cantidad de días lluviosos por mes y su variabilidad a lo largo del año. Las cajas corresponden a las distintas realizaciones mientras que los puntos rojos corresponden a los valores observados. La cantidad de días lluviosos por se acumula para todos los años del período, en este caso 57 años, es por esto que en enero los días lluviosos totalizaron aproximadamente 550. A pesar de existir una diferencia de casi 400 días entre los meses estivales e invernales, el generador es capaz de capturar están gran diferencia.
Esta Figura compara los cuantiles observados de precipitación diaria y los simulados por el generador por cada trimestre del año. Los puntos azules corresponden a los distintos percentiles hasta el percentil 99 mientras que los rojos corresponden a los montos mayores al percentil 99, es decir, a los extremos. En el eje x se ubican los cuantiles observados mientras que en el y, los simulados. El objetivo de esta prueba es que los puntos estén alineados sobre la recta 1:1 lo que indicaría que ambos cuantiles, observados y simulados, son iguales. Se observa que para casi todos los puntos, a excepción de los más extremos, la concordancia de ambas series es muy buena.
Esta Figura muestra la probabilidad de los montos diarios de precipitación diaria por trimestre. El área roja corresponde a los montos observados mientras que la azul, a los simulados. Cabe mencionar que la escala en el eje x es logarítmica por lo que pequeños desplazamientos sobre el eje implican grandes cambios en los montos. Se observa un buen acuerdo para las cuatro estaciones del año a excepción de los pequeños montos cercanos a un 1 mm.
Este diagnóstico compara la precipitación agregada por trimestre. Las cajas corresponden a las distintas realizaciones mientras que los puntos rojos corresponden al valor observado. Al utilizar totales trimestrales en el ajuste y la generación se producen series que copian las variaciones observadas en el registro histórico. Es decir, si el año observado tuvo precipitaciones por debajo del promedio, las distintas realizaciones tenderán a ser menores al promedio y viceversa.
Esta Figura muestra la distribución de los totales mensuales de precipitación. La línea roja corresponde a los acumulados mensuales observados mientras que las grises a las distintas realizaciones. Cabe mencionar que la escala del eje x es logarítmica por lo que pequeños desplazamientos sobre el eje implican grandes cambios en los montos. Se observa un buen acuerdo para todos los meses.
Esta Figura muestra la marcha mensual de los desvíos estándar de precipitación mensual. Es decir, la variabilidad de los acumulados mensuales a lo largo del año. Los puntos rojos corresponden a los valores calculados a partir de los datos observados y las cajas a las distintas realizaciones. Se observa que el generador es capaz de capturar la variabilidad intranual ya que la mediana de las cajas siguen el mismo patrón que los datos observados. Además, las cajas en los meses estivales son mas grandes lo que implica una mayor variabilidad en comparación con los meses invernales.
Esta Figura muestra otra medida de dispersión, en este caso, el desvío absoluto mediano (MAD, por sus siglas en inglés). Al igual que en el caso anterior, las cajas corresponden al MAD calculado a partir de los datos observados y las cajas a las distintas realizaciones. El buen acuerdo entre las cajas y los puntos confirma que el generador captura la variabilidad en los totales mensuales de lluvia.
Diagnósticos de temperatura máxima
A continuación se mostrarán los distintos diagnósticos desarrollados para validar las series diarias de temperatura máxima.
En esta Figura se muestra una comparación de los cuantiles observados y generados de temperatura máxima diaria por trimestre. En el eje x se encuentran los cuantiles observados mientras que en el y, los generados. Los puntos azules corresponden a los puntos cuyo valor se encuentra entre el percentil 1 y 99 y los rojos a los menores y superiores de los percentiles 1 y 99, respectivamente. El objetivo de esta prueba es verificar que todos los puntos se encuentren sobre la recta 1:1. Se observa una muy buena concordancia para los cuatros trimestres incluso en los extremos de la distribución.
Esta Figura compara la temperatura máxima media de la serie observada con la de las distintas realizaciones. La línea vertical roja corresponde al valor observado mientras que las barras a las distintas realizaciones. Se observa que la medias máximas de todos las realizaciones se encuentran en un rango muy estrecho del orden de décimas de grado centígrado.
Esta Figura muestra la probabilidad acumulada de la temperatura máxima por trimestre del año. La línea roja corresponde a la probabilidad observada mientras que las azules, a las distintas realizaciones. Se observa que las líneas azules envuelven perfectamente a la línea roja por lo que la distribución probabilística es casi idéntica.
Esta Figura compara la variabilidad de la temperatura máxima media por trimestre a lo largo del tiempo. Los puntos rojos corresponden a las medias observadas mientras que las cajas a las distintas realizaciones. Se observa que las cajas siguen el comportamiento de los datos observados.
Esta Figura compara la autocorrelación de los valores con el lag -1. Es decir, compara la temperatura máxima diaria del día t con la temperatura máxima del día t-1. Los puntos rojos corresponden a la autocorrelación observada mientras que las cajas a las distintas realizaciones. Se observa un patrón anual muy marcado con autocorrelaciones más altas en invierno que en verano. Este diagnóstico es muy importante para verificar si las potenciales rachas cálidas serán bien reflejadas o no.
Esta Figura compara la media mensual calculada a partir de la series histórica con las distintas realizaciones para cada mes del año. La línea roja corresponde a una diferencia de 0 lo que quiere decir que la media observada y generada son iguales. Se observa que para casi todos los meses las cajas se encuentran sobre la línea roja a excepción de los meses de junio y agosto donde se observa un leve sesgo frío de menos de 0.25 °C.
Esta Figura compara la distribución de la cantidad de rachas cálidas generadas con las observadas en el registro histórico. La línea roja corresponde a la cantidad de períodos cálidos totales en el registro mientras que las barras a las distintas realizaciones. Se observa que hay una subestimación en la cantidad total de rachas cálidas para esta estación.
Diagnósticos de temperatura mínima
A continuación se mostrarán los distintos diagnósticos desarrollados para validar las series diarias de temperatura mínima
En esta Figura se muestra una compararon de los cuantiles observados y generados de temperatura mínima diaria por trimestre. En el eje x se encuentran los cuantiles observados mientras que en el y, los generados. Los puntos azules corresponden a los puntos cuyo valor se encuentra entre el percentil 1 y 99 y los rojos a los menores y superiores de los percentiles 1 y 99, respectivamente. El objetivo de esta prueba es verificar que todos los puntos se encuentren sobre la recta 1:1. Se observa una muy buena concordancia para los cuatros trimestres incluso en los extremos de la distribución. Solo algunos puntos son subestimados en el extremo inferior de la distribución.
Esta Figura compara la temperatura mínima media de la serie observada con la de las distintas realizaciones. La línea vertical roja corresponde al valor observado mientras que las barras a las distintas realizaciones. Se observa que la medias mínimas de todos las realizaciones se encuentran en un rango muy estrecho del orden de dos décimas de grado centígrado. La diferencia entre la media observada el centro de la distribución de las medias mínimas generadas es de menos de 0.2 °C.
Esta Figura muestra la probabilidad acumulada de la temperatura mínima por trimestre del año. La línea roja corresponde a la probabilidad observada mientras que las azules, a las distintas realizaciones. Se observa que las líneas azules envuelven perfectamente a la línea roja por lo que la distribución probabilística es casi idéntica.
Esta Figura compara la variabilidad de la temperatura mínima media por trimestre a lo largo del tiempo. Los puntos rojos corresponden a las medias observadas mientras que las cajas a las distintas realizaciones. Se observa que las cajas siguen el comportamiento de los datos observados incluso en años con grandes variaciones frente a la media.
Esta Figura compara la autocorrelación de los valores con el lag -1. Es decir, compara la temperatura mínima diaria del día t con la temperatura mínima del día t-1. Los puntos rojos corresponden a la autocorrelación observada mientras que las cajas a las distintas realizaciones. Se observa un patrón anual muy marcado con autocorrelaciones más altas en otoño e invierno que en verano.
Esta Figura compara la cantidad de días con heladas durante un año. La línea vertical roja corresponde a la cantidad media de heladas por año calculada a partir de los registros históricos mientras que las barras corresponden a las distintas realizaciones. EL generador es capaz de simular muy bien los días con heladas ya que que la diferencia entre el valor observado y la media de la distribución de las series sintéticas es menor a un día.
Esta Figura es similar a la anterior con la diferencia en que se divide el año en los distintos trimestres. Al igual que en el caso anterior, la cantidad de días con heladas generados es prácticamente idéntica a lo observado.
Esta Figura compara la media mensual calculada a partir de la series histórica con las distintas realizaciones para cada mes del año. La línea roja corresponde a una diferencia de 0 lo que quiere decir que la media observada y generada son iguales. Se observa que para durante los meses invernales hay un ligero sesgo cálido de 0.5 °C aproximadamente.
Esta Figura compara la distribución de la cantidad de rachas frías generadas con las observadas en el registro histórico. La línea roja corresponde a la cantidad de períodos fríos totales en el registro mientras que las barras a las distintas realizaciones. Se observa que hay una subestimación en la cantidad total de rachas cálidas para esta estación.